/*
 * io.c - Mokri
 * Contributors: xMine
 * (Any new Contributor may add himself/herself to the list)
 * Changes and fixes to be made:
 * Source:
 * For more on inline ASM in GCC read this: http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
 */

#include "main.h"

/* Sendet ein Byte an einen Port
 * Parameter: Port des Geräts, Daten
 * Rückgaben: Keine
 */
void outb(uint16_t port, uint8_t data) {
    asm volatile ("outb %0, %1" : : "a" (data), "Nd" (port));
}

/* Empfängt ein Byte von einem Gerät
 * Parameter: Port des zu lesenden Geräts
 * Rückgaben: Rückgabe des Geräts
 */
unsigned char inb (uint16_t port) {
    unsigned char wert;
    asm volatile ("inb %1, %0" : "=a" (wert) : "dN" (port));
    return wert;
}
